> ## Documentation Index
> Fetch the complete documentation index at: https://sequence-0fb8d9e6-relayer_docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Checkout

> Documentation for Unreal SDK overview for the Sequence infrastructure stack for web3 gaming.

## Creating Transactions

### Generate Listing Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/R0V8biC-PXwL8fXv/images/unreal/checkout/generate_listing_transaction.png?fit=max&auto=format&n=R0V8biC-PXwL8fXv&q=85&s=576ec0f3328dce70e7cc14ff04e6178e" width="2018" height="1064" data-path="images/unreal/checkout/generate_listing_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGenerateTransactionResponse> OnApiSuccess = [this, OnSuccess](const FGenerateTransactionResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GenerateListingTransaction(SequenceSdk::GetChainId(), WalletAddress, CollectionAddress, TokenId, Amount, ContractType, CurrencyTokenAddress, PricePerToken, Expiry, OrderbookKind, WalletKind, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Generate Offer Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/R0V8biC-PXwL8fXv/images/unreal/checkout/generate_offer_transaction.png?fit=max&auto=format&n=R0V8biC-PXwL8fXv&q=85&s=099855b8c5103d07bac545cf94fd490d" width="2018" height="1064" data-path="images/unreal/checkout/generate_offer_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGenerateTransactionResponse> OnApiSuccess = [this, OnSuccess](const FGenerateTransactionResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GenerateOfferTransaction(SequenceSdk::GetChainId(), WalletAddress, CollectionAddress, TokenId, Amount, ContractType, CurrencyTokenAddress, PricePerToken, Expiry, OrderbookKind, WalletKind, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Generate Buy Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/R0V8biC-PXwL8fXv/images/unreal/checkout/generate_buy_transaction.png?fit=max&auto=format&n=R0V8biC-PXwL8fXv&q=85&s=cf801b04a94db7cc7d7c1bae2d61edf0" width="2018" height="1064" data-path="images/unreal/checkout/generate_buy_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGenerateTransactionResponse> OnApiSuccess = [this, OnSuccess](const FGenerateTransactionResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GenerateBuyTransaction(SequenceSdk::GetChainId(), WalletAddress, Order, Amount, AdditionalFee, WalletKind, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Generate Sell Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/R0V8biC-PXwL8fXv/images/unreal/checkout/generate_sell_transaction.png?fit=max&auto=format&n=R0V8biC-PXwL8fXv&q=85&s=5a958ffe35e680af60983dbd872424d6" width="2018" height="1064" data-path="images/unreal/checkout/generate_sell_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGenerateTransactionResponse> OnApiSuccess = [this, OnSuccess](const FGenerateTransactionResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GenerateSellTransaction(SequenceSdk::GetChainId(), WalletAddress, Order, Amount, AdditionalFee, WalletKind, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Generate Cancel Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/R0V8biC-PXwL8fXv/images/unreal/checkout/generate_cancel_transaction.png?fit=max&auto=format&n=R0V8biC-PXwL8fXv&q=85&s=c5bed19e034e26253d91c23ede9b6113" width="2018" height="1064" data-path="images/unreal/checkout/generate_cancel_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGenerateTransactionResponse> OnApiSuccess = [this, OnSuccess](const FGenerateTransactionResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GenerateCancelTransaction(SequenceSdk::GetChainId(), WalletAddress, CollectionAddress, OrderId, MarketplaceKind, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Generate Cancel Transaction by Order

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/R0V8biC-PXwL8fXv/images/unreal/checkout/generate_cancel_transaction_by_order.png?fit=max&auto=format&n=R0V8biC-PXwL8fXv&q=85&s=4bfd1701a715b3e8bcedbf13c44a3180" width="2018" height="1064" data-path="images/unreal/checkout/generate_cancel_transaction_by_order.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGenerateTransactionResponse> OnApiSuccess = [this, OnSuccess](const FGenerateTransactionResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GenerateCancelTransactionByOrder(SequenceSdk::GetChainId(), WalletAddress, CollectionAddress, Order, MarketplaceKind, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Steps to Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/R0V8biC-PXwL8fXv/images/unreal/checkout/steps_to_transaction.png?fit=max&auto=format&n=R0V8biC-PXwL8fXv&q=85&s=a424226077855ab4d75b9a8a627cc878" width="2018" height="1064" data-path="images/unreal/checkout/steps_to_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    UTransactions* Transactions = NewObject<UTransactions>();

    for (const FTransactionStep& Step : Steps)
    {
        FRawTransaction RawTransaction = FRawTransaction(Step.To, Step.Data, Step.Value.IsEmpty() ? TEXT("0") : Step.Value);
        Transactions->AddRaw(RawTransaction);
    }
    ```
  </Tab>
</Tabs>

## Checkout Options

### Get Checkout Options

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/R0V8biC-PXwL8fXv/images/unreal/checkout/get_checkout_options.png?fit=max&auto=format&n=R0V8biC-PXwL8fXv&q=85&s=400fb2f2687b051a2a71e79589a36154" width="2018" height="1064" data-path="images/unreal/checkout/get_checkout_options.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGetCheckoutOptionsResponse> OnApiSuccess = [this, OnSuccess](const FGetCheckoutOptionsResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GetCheckoutOptions(SequenceSdk::GetChainId(), WalletAddress, Orders, AdditionalFeeBps, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Get Checkout Options by Orders

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/R0V8biC-PXwL8fXv/images/unreal/checkout/get_checkout_options_by_orders.png?fit=max&auto=format&n=R0V8biC-PXwL8fXv&q=85&s=cc7d22eefcb89a71bf0b837e32a775fa" width="2018" height="1064" data-path="images/unreal/checkout/get_checkout_options_by_orders.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGetCheckoutOptionsResponse> OnApiSuccess = [this, OnSuccess](const FGetCheckoutOptionsResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GetCheckoutOptionsByOrders(SequenceSdk::GetChainId(), WalletAddress, Orders, AdditionalFeeBps, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Get Checkout Options by ERC1155 Sale

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/R0V8biC-PXwL8fXv/images/unreal/checkout/get_checkout_options_by_erc1155.png?fit=max&auto=format&n=R0V8biC-PXwL8fXv&q=85&s=10844a7322ce6e6e4c08657f09edbbac" width="2018" height="1064" data-path="images/unreal/checkout/get_checkout_options_by_erc1155.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGetCheckoutOptionsResponse> OnApiSuccess = [this, OnSuccess](const FGetCheckoutOptionsResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GetCheckoutOptionsByERC1155Contract(SequenceSdk::GetChainId(), WalletAddress, SaleContract, CollectionAddress, TokenId, Amount, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Get Checkout Options by ERC721 Sale

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/R0V8biC-PXwL8fXv/images/unreal/checkout/get_checkout_options_by_erc721.png?fit=max&auto=format&n=R0V8biC-PXwL8fXv&q=85&s=b934bf5562ef35436dd529f328618d43" width="2018" height="1064" data-path="images/unreal/checkout/get_checkout_options_by_erc721.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGetCheckoutOptionsResponse> OnApiSuccess = [this, OnSuccess](const FGetCheckoutOptionsResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GetCheckoutOptionsByERC721Contract(SequenceSdk::GetChainId(), WalletAddress, SaleContract, CollectionAddress, TokenId, Amount, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Get Checkout Options by Token Id Amounts

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/R0V8biC-PXwL8fXv/images/unreal/checkout/get_checkout_options_by_token_id_amounts.png?fit=max&auto=format&n=R0V8biC-PXwL8fXv&q=85&s=00926d39d5fb66b951b7be9f6ec5e4bb" width="2018" height="1064" data-path="images/unreal/checkout/get_checkout_options_by_token_id_amounts.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGetCheckoutOptionsResponse> OnApiSuccess = [this, OnSuccess](const FGetCheckoutOptionsResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GetCheckoutOptionsByTokenIdAmounts(SequenceSdk::GetChainId(), WalletAddress, SaleContract, CollectionAddress, AmountsByTokenId, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>
